以題目的範例測試資料為例:
7 3
abacaba
1 3
2 5
1 7
例如範例中的歌曲abacaba, 可以先轉成編號的array
a = [1, 2, 1, 3, 1, 2, 1] 接著回答每個問題時,需要頻繁的計算subarray的值,
因此這裡可以定義一個新的array表示方式,b[i] = sum[a[0] - a[i]],這樣會比較好計算
// https://codeforces.com/problemset/problem/1539/B
#include <iostream>
#include <string>
using namespace std;
#define MAX_SIZE (int)(1e6+10)
int main(){
int n, q, strNum[MAX_SIZE];
string str;
cin >> n >> q;
cin >> str;
strNum[0] = 0;
int strSize = str.size();
for (int i = 1; i <= strSize; i++) {
strNum[i] = strNum[i-1] + str[i-1] - 'a' + 1;
}
int l, r;
for (int i = 0; i < q; i++) {
cin >> l >> r;
cout << strNum[r] - strNum[l-1] << endl;
}
return 0;
}